MAC flush optimizations for ethernet rings

ABSTRACT

Techniques are identified for optimizing the MAC flush in Ethernet rings for faster traffic restoration. In one embodiment, flushing of MAC addresses is performed only once on receiving a first control message. For example, when a first control message is received, a network device may switch from a first state to a second state, which may indicate that the MAC addresses are not to be flushed if additional control messages are received. In another embodiment, flushing of MAC addresses is performed on one ring port rather than on both ring ports. For example, a flag field of a control message header may be used to determine on which port to flush. In another embodiment, flushing of MAC addresses is performed on only one ring port of an interconnection node. For example, the ring port can be determined using a flag field and possibly labels associated with the ring ports.

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is a non-provisional of and claims the benefitand priority under 35 U.S.C. 119(e) of U.S. Provisional Application No.61/697,211, filed on Sep. 5, 2012, and U.S. Provisional Application No.61/811,112, filed on Apr. 11, 2013, each of which is herein incorporatedby reference in its entirety for all purposes.

The present application is related to U.S. patent application Ser. No.14/018,713, filed concurrently, and entitled MAC FLUSH OPTIMIZATIONS FORETHERNET RINGS, naming Kulambi, the entirety of which is hereinincorporated by reference for all purposes.

BACKGROUND

Embodiments of the present invention relate to networking and moreparticularly to techniques for ring protection switching.

In a network, nodes interconnected by links can learn paths from varioussources to various destinations over time. As these nodes learn suchpaths, the nodes can update internally stored tables in order tospecify, for a data packet having a particular destination, the port ofthe node on which that data packet should be forwarded. When a linkfails after such paths have been learned, at least some paths may needto be re-learned in order to compensate for the fact that pathscontaining the failed link are no longer viable; alternative paths willneed to be learned in those cases.

The re-learning of paths following link failure can take a substantialamount of time, which is detrimental to the data-path switchingperformance within the network. Fortunately, the configuration of nodesusing a protocol called Ethernet Ring Protection (ERP) protocol cansomewhat simplify and quicken the re-learning process by confiningrelearning only over ring nodes of one ring. The TelecommunicationStandardization Sector of the International Telecommunication Union(ITU-T) G.8032 Ethernet Ring Protection Switching (ERPS) standarddefines the automatic protection switching (APS) protocol and protectionswitching mechanisms for Ethernet layer network (ETH) ring topologies,including details pertaining to ERP characteristics, architectures, andthe ring APS (R-APS) protocol. An important aspect of deploying theG.8032 ERPS protocol to customers is its performance in detectingfailure on a ring, such as a signal failure on one of the ports or anode failure, and restoring the traffic. Media access control (MAC)address flush is one of the most important factors that determine thetime taken to restore the traffic.

BRIEF SUMMARY

Embodiments of the present invention relate to networking and moreparticularly to techniques for ring protection switching. In oneembodiment, flushing of network device addresses is performed only onceon receiving a first control message. For example, when a first R-APSSignal Failure (R-APS(SF)) message is received, a network device mayswitch from an Idle state to a Protection state, which may indicate thatthe MAC addresses are not to be flushed if additional R-APS(SF) messagesare received. In another embodiment, flushing of network deviceaddresses is performed on one of the ring ports rather than on both ringports. For example, the port on which a MAC address flush is to beperformed can be determined using a flag field, such as the flag fieldof the R-APS(SF) protocol data unit (PDU). In another embodiment,flushing of network device addresses is performed on one of the ringports rather than on all three ring ports of an interconnection node.For example, the ring port on which a MAC address flush is to beperformed can be determined using a flag field, such as the flag fieldof the R-APS(SF) PDU, and possibly labels associated with the three ringports.

In one embodiment, a device includes memory and a processing unit. Thememory is configurable to store address information of ports of a node,the ports including a first port and a second port both associated witha ring of nodes, the node configurable as a node in the ring, addressinformation of a particular port identifying a set of one or moreaddresses associated with the particular port. The processing unit isconfigurable, in response to one of the ports receiving a controlmessage in response to a failure on the ring, to cause addressinformation of the first port to be cleared from the memory, withoutclearing address information of the second port from the memory, andcause the control message to be forwarded to a neighbor node of the ringof nodes. A flag of the forwarded control message indicates to theneighbor node which port to clear address information.

In certain embodiments, the processing unit may be further configurable,in response to one of the ports receiving the control message, to causea blocked port of the ports to be unblocked to allow data messagetraffic using the unblocked port; and cause the flag of the forwardedcontrol message to be set, wherein the set flag of the forwarded controlmessage indicates to the neighbor node to clear address information of aport on which the forwarded control message is not received. Theprocessing unit may be further configurable to determine the port onwhich the control message was received, wherein the processing unit isconfigurable to cause the control message to be forwarded to theneighbor node by causing the control message to be forwarded using aport of the ports that is not the determined port.

In certain embodiments, the processing unit may be further configurableto determine the port on which the control message was received; anddetermine whether a flag of the control message is set, wherein causingaddress information of the first port to be cleared further includes: ifthe flag of the control message is determined as not being set, causingaddress information of the determined port to be cleared, the first portbeing the determined port; and if the flag of the control message isdetermined as being set, causing address information of a port of theports that is not the determined port to be cleared, the first port notbeing the determined port. The processing unit may be furtherconfigurable to: if the flag of the control message is determined as notbeing set, cause the control message to be forwarded to the neighbornode by causing the control message with the flag not set to beforwarded using the port of the ports that is not the determined port;and if the flag of the control message is determined as being set, causethe control message to be forwarded to the neighbor node by causing thecontrol message with the flag set to be forwarded using the port of theports that is not the determined port.

In one embodiment, a device includes memory and a processing unit. Thememory is configurable to store address information of ports of a node,the ports including a first port associated with a ring of nodes, thenode configurable as a node in the ring, address information of aparticular port identifying a set of one or more addresses associatedwith the particular port. The processing unit is configurable to: inresponse to one of the ports receiving a first control message inresponse to a failure on the ring, cause address information of thefirst port to be cleared from the memory; and in response to one of theports receiving a second control message in response to the failure,cause the address information of the first port to be maintained in thememory.

In certain embodiments, the processing unit may be further configurableto: in response to one of the ports receiving the first control message,cause a switch from a first state to a second state at the node, whereincausing the address information of the first port to be maintained inresponse to one of the ports receiving the second control message isbased on the second state of the node. The first control message and thesecond control message may be received on different ports of the ports.In response to one of the ports receiving the first control message,address information of the first port is caused to be cleared from thememory, without clearing address information of a second port of theports that is not the first port from the memory. The first controlmessage and the second control message may be received according to anEthernet ring protection switching protocol.

In one embodiment, a computer-readable memory storing instructionsincludes: instructions that cause a processing unit to access a controlmessage received at a network device, the network device configurable asa network device in multiple network devices configured in a ring, thecontrol message received in response to a failure on the ring, addressinformation of a particular port identifying a set of one or moreaddresses associated with the particular port; instructions that causethe processing unit, in response to receipt of the control message, tocause address information of a first port of the network device to becleared, without clearing address information of a second port of thenetwork device; and instructions that cause the processing unit, inresponse to receipt of the control message, to cause the control messageto be forwarded to a neighbor network device of the multiple networkdevices. A flag of the forwarded control message indicates to theneighbor network device which port to clear address information.

In certain embodiments, the memory may further include: instructionsthat cause the processing unit, in response to receipt of the controlmessage, to cause a blocked port of the network device to be unblockedto allow data message traffic using the unblocked port; and instructionsthat cause the processing unit, in response to receipt of the controlmessage, to cause the flag of the forwarded control message to be set,wherein the set flag of the forwarded control message indicates to theneighbor network device to clear address information of a port on whichthe forwarded control message is not received. The memory may furtherinclude instructions that cause the processing unit to determine a portof the network device on which the control message was received, whereincausing the control message to be forwarded to the neighbor networkdevice further includes causing the control message to be forwardedusing a port of the network device that is not the determined port.

In certain embodiments, the memory may further include: instructionsthat cause the processing unit to determine a port of the network deviceon which the control message was received; and instructions that causethe processing unit to determine whether a flag of the control messageis set, wherein causing address information of the first port to becleared further includes: if the flag of the control message isdetermined as not being set, causing address information of thedetermined port to be cleared, the first port being the determined port;and if the flag of the control message is determined as being set,causing address information of a port of the network device that is notthe determined port to be cleared, the first port not being thedetermined port. The memory may further include: if the flag of thecontrol message is determined as not being set, causing the controlmessage to be forwarded to the neighbor network device by causing thecontrol message with the flag not set to be forwarded using the port ofthe network device that is not the determined port; and if the flag ofthe control message is determined as being set, causing the controlmessage to be forwarded to the neighbor network device by causing thecontrol message with the flag set to be forwarded using the port of thenetwork device that is not the determined port.

In one embodiment, a computer-readable memory storing instructionsincludes: instructions that cause a processing unit to access a firstcontrol message received at a network device, the network deviceconfigurable as a network device in multiple network devices configuredin a ring, the first control message received in response to a failureon the ring, address information of a port identifying a set of one ormore addresses associated with the port; instructions that cause theprocessing unit, in response to receipt of the first control message, tocause address information of a port of the network device to be cleared;instructions that cause the processing unit to access a second controlmessage received at the network device, the second control messagereceived in response to the failure; and instructions that cause theprocessing unit, in response to receipt of the second control message,to cause the address information of the port to be maintained.

In certain embodiments, the memory may further include: instructionsthat cause the processing unit, in response to receipt of the firstcontrol message, to cause a switch from a first state to a second stateat the network device, wherein causing the address information of theport to be maintained in response to receipt of the second controlmessage is based on the second state of the network device. The firstcontrol message and the second control message may be received ondifferent ports of the network device. In response to receipt of thefirst control message, address information of the port of the networkdevice is caused to be cleared, without clearing address information ofanother port of the network device. The first control message and thesecond control message may be received according to an Ethernet ringprotection switching protocol.

In one embodiment, a method includes receiving, at a network device inmultiple network devices configured in a ring, a first control messagein response to a failure on the ring, address information of a portidentifying a set of one or more addresses associated with the port; inresponse to receiving the first control message, clearing addressinformation of a port of the network device; receiving, at the networkdevice, a second control message in response to the failure; and inresponse to receiving the second control message, maintaining theaddress information of the port.

In certain embodiments, the method may further include: in response toreceiving the first control message, switching from a first state to asecond state at the network device, wherein maintaining the addressinformation of the port in response to receiving the second controlmessage is based on the second state of the network device. The firstcontrol message and the second control message may be received ondifferent ports of the network device. In response to receiving thefirst control message, address information of the port of the networkdevice is cleared, without clearing address information of another portof the network device. The first control message and the second controlmessage may be received according to an Ethernet ring protectionswitching protocol.

In one embodiment, a device including memory and a processing unit. Thememory is configurable to store address information of three ports of anode, the three ports including a first port associated with a firstring of nodes, and a second port and a third port both associated with asecond ring of nodes, the node configurable to interconnect the firstring and the second ring, address information of a particular portidentifying a set of one or more addresses associated with theparticular port. The processing unit is configurable, in response to thefirst port receiving a control message in response to a failure on thefirst ring, to cause address information of one of the three ports to becleared from the memory, without clearing address information of theother two of the three ports from the memory.

In certain embodiments, the processing unit may be further configurableto determine on which of the three ports to cause address information tobe cleared based on a flag of the control message received at the firstport. The processing unit may be further configurable to determinewhether the flag of the control message received at the first port isset, wherein causing address information of one of the three ports to becleared further includes: if the flag of the control message isdetermined as not being set, causing address information of the firstport to be cleared; and if the flag of the control message is determinedas being set, causing address information of one of the second port andthe third port to be cleared. The processing unit may be furtherconfigurable to determine on which of the second port and the third portto cause address information to be cleared based on labels associatedwith the ports. Labels associated with the first port and the port ofthe second port and the third port determined for clearing addressinformation may be the same.

In one embodiment, a method includes receiving, at a first port of anetwork device in multiple network devices configured in interconnectedrings including a first ring and a second ring, a control message inresponse to a failure on the first ring, the network deviceinterconnecting the first ring and the second ring, address informationof a particular port identifying a set of one or more addressesassociated with the particular port; and in response to receiving thecontrol message, clearing address information of one of three ports ofthe network device, without clearing address information of the othertwo of the three ports, the three ports including the first portassociated with the first ring, and a second port and a third port bothassociated with the second ring.

In certain embodiments, the method may further include determining onwhich of the three ports to clear address information based on a flag ofthe control message. The method may further include: determining whetherthe flag of the control message is set, wherein clearing addressinformation of one of the three ports further includes: if the flag ofthe control message is determined as not being set, clearing addressinformation of the first port; and if the flag of the control message isdetermined as being set, clearing address information of one of thesecond port and the third port. The method may further includedetermining on which of the second port and the third port to clearaddress information based on labels associated with the ports. Labelsassociated with the first port and the port of the second port and thethird port determined for clearing address information may be the same.

In one embodiment, a computer-readable memory storing instructionsincludes: instructions that cause a processing unit to access a controlmessage received at a first port of a network device, the network deviceconfigurable to interconnect a first ring of network devices and asecond ring of network devices, the control message received in responseto a failure on the first ring, address information of a particular portidentifying a set of one or more addresses associated with theparticular port; and instructions that cause the processing unit, inresponse to receipt of the control message, to clear address informationof one of three ports of the network device, without clearing addressinformation of the other two of the three ports, the three portsincluding the first port associated with the first ring, and a secondport and a third port both associated with the second ring.

In certain embodiments, the memory may further include instructions thatcause the processing unit to determine on which of the three ports toclear address information based on a flag of the control message. Thememory may further include: instructions that cause the processing unitto determine whether the flag of the control message is set, whereinclearing address information of one of the three ports further includes:if the flag of the control message is determined as not being set,clearing address information of the first port; and if the flag of thecontrol message is determined as being set, clearing address informationof one of the second port and the third port. The memory may furtherinclude instructions that cause the processing unit to determine onwhich of the second port and the third port to clear address informationbased on labels associated with the ports. Labels associated with thefirst port and the port of the second port and the third port determinedfor clearing address information may be the same.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a simplified diagram of an Ethernet Ring Protection (ERP)ring with a Ring Protection Link (RPL) Owner and RPL port in blockedstate;

FIG. 2 depicts a simplified diagram of an ERP ring with a signal failureon the link connecting Node 3 and Node 4;

FIG. 3 depicts a simplified diagram of an ERP ring with MAC addresslearning before a signal failure;

FIG. 4 depicts a simplified diagram of two ERP rings: a major ring and asub-ring;

FIG. 5 depicts a simplified flowchart depicting clearing of addressinformation at a non-RPL Owner network device in response to a failureon the ring;

FIG. 6 depicts a simplified flowchart depicting clearing of addressinformation at an RPL Owner network device in response to a failure onthe ring; and

FIG. 7 depicts a simplified block diagram of a network device that mayincorporate an embodiment of the present invention.

The foregoing, together with other features and embodiments, will becomemore apparent when referring to the following specification, claims, andaccompanying drawings.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, specificdetails are set forth in order to provide a thorough understanding ofcertain embodiments of the invention. However, it will be apparent thatvarious embodiments may be practiced without these specific details. Thefigures and description are not intended to be restrictive.

Embodiments of the present invention relate to networking and moreparticularly to techniques for ring protection switching. In oneembodiment, flushing of network device addresses is performed only onceon receiving a first control message. For example, when a firstR-APS(SF) message is received, a network device may switch from an Idlestate to a Protection state, which may indicate that the MAC addressesare not to be flushed if additional R-APS(SF) messages are received. Inanother embodiment, flushing of network device addresses is performed onone of the ring ports rather than on both ring ports. For example, theport on which a MAC address flush is to be performed can be determinedusing a flag field, such as the flag field of the R-APS(SF) PDU. Inanother embodiment, flushing of network device addresses is performed onone of the ring ports rather than on all three ring ports of aninterconnection node. For example, the ring port on which a MAC addressflush is to be performed can be determined using a flag field, such asthe flag field of the R-APS(SF) PDU, and possibly labels associated withthe three ring ports. Although examples and embodiments described belowreference the G.8032 ERPS protocol, the techniques described herein mayapply to other ring protection protocols. Similarly, the techniquesdescribed herein may apply to flushing of addresses other than MACaddresses.

Introduction

The G.8032 ERP standard defines the automatic protection switchingprotocol and protection switching mechanisms for Ethernet Ringtopologies. One of the nodes (i.e., network devices) in the ring acts asan owner or manager of a Ring Protection Link (RPL). The RPL Owner keepsa ring port to the RPL (i.e., the RPL port) in a blocking state for datamessage traffic. However, the RPL is kept in an open state for controlmessage traffic. The RPL port blocking avoids the loop in the ring. Whenthere is a topology change, e.g., due to a failure on the ring such as asignal failure on one of the ports or a node failure, the RPL Ownerunblocks the RPL port to allow data message traffic to be restored.Although examples and embodiments described below generally refer tosignal failures, the techniques described herein may apply to othertypes of topology changes (e.g., node failures, adding a node to thering, or removing a node from the ring, manual or forced switch in thering, etc.).

ERP exchanges PDUs called R-APS PDUs for protocol operation. When anynode in the ring detects a topology change, the node initiatesprotection switching by blocking its ring port facing the failed linkand generating a R-APS(SF) PDU. These PDUs are transmitted on a controlchannel (i.e., a R-APS channel) and processed by the other nodes in thering. On receiving the PDU, each node will flush (e.g., remove, clear,or un-learn) the MAC addresses learned on both of its ring ports. TheRPL Owner unblocks its RPL port to restore the data message traffic on adata channel in the ring. In some embodiments, the non-RPL Owner node onthe other end of the RPL (e.g., an RPL Neighbor) also unblocks its RPLport to restore the data message traffic. Each node re-learns MACaddresses on its flushed ring ports, e.g., by broadcasting data framesthrough the network until learning of the corresponding MAC addresses iscompleted.

In the examples and embodiments described below, it is presumed thatlogical rings in the network topology have already been identified andconfigured. The identifying and configuring may have been performedmanually (i.e., by a human) or automatically. Examples of techniques foridentifying and configuring logical rings in a network topologyautomatically using a Multiple Ring Identification and ConfigurationProtocol (MRICP) are described in U.S. patent application Ser. Nos.13/954,861 and 13/954,867, which were filed on Jul. 30, 2013, each ofwhich is herein incorporated by reference in its entirety for allpurposes. As provided in these applications, the techniques can includetwo separate sequentially performed phases. In the first phase, theprotocol can automatically identify all rings that are present within aVirtual Local Area Network (VLAN) topology. In the second phase, theprotocol can automatically load each ring node with appropriateconfiguration in conformity with the ERP protocol. After this ERPconfiguration of each node has been performed, the failure of a linkwithin the network will not require every network node to re-learn pathsthrough the network; instead, the nodes that are required to re-learnsuch paths can be limited to those within the particular ring thatcontained the failed link.

FIG. 1 depicts a simplified diagram of an ERP ring 100 with an RPL Owner110 and an RPL 120 in blocked state. In this example, Node 1 acts as theRPL Owner 110 with the link connecting to Node 6 as the RPL 120. The RPLOwner 110 keeps the RLP port to the RPL 120 in blocked state to breakthe loop when the topology is in a stable state.

FIG. 2 depicts a simplified diagram of an ERP ring 200 with a signalfailure 230 on the link connecting Node 3 and Node 4. Node 1 acts as theRPL Owner 210 with the link connecting to Node 6 as the RPL 220. Ondetection of this signal failure 230, the following actions are takenaccording to the G.8032 ERP standard:

1. Each node on both sides of the signal failure 230, Node 3 and Node 4in this example, will perform MAC address flush on both of its ringports and transmit R-APS(SF) to its neighbor nodes to indicate thesignal failure or topology change. The arrows around the outside of theERP ring 200 indicate the transmitting and forwarding of the R-APS(SF)generated by Node 3 in a counter-clockwise direction around the ERP ring200. The arrows around the inside of the ERP ring 200 indicate thetransmitting and forwarding of the R-APS(SF) generated by Node 4 in aclockwise direction around the ERP ring 200.

2. Each of the other nodes in the ring, Nodes 1-2 and 5-6 in thisexample, on receiving the R-APS(SF) on one ring port, performs MACaddress flush on both of its ring ports. The node then forwards theR-APS(SF) using its other ring port (i.e., the non-receiving ring port)to its neighbor node. As illustrated in FIG. 2, the R-APS(SF), ascontrol message traffic, crosses the RPL Owner 210 and the RPL 220, asthe R-APS(SF) traverses the ring. Since the R-APS(SF) is received onboth ring ports of a node, from Node 3 in one direction around the ringand from Node 4 in the other direction around the ring, MAC addressflush is performed twice on each of the node's two ring ports.

3. The RPL owner 210, Node 1 in this example, in addition to performingthe MAC address flushes, unblocks the RPL port to allow data messagetraffic to use the RPL 220. The RPL port is open to control messagetraffic (e.g., R-APS(SF) messages) even when it is blocked to datamessage traffic.

MAC Address Flush Optimizations on Ethernet Rings

This section describes techniques for optimizing MAC address flushes onEthernet rings for faster traffic restoration. Some embodimentsdescribed below do not implement or do not use flush logic of thecurrent G.8032 ERP standard that tracks (node ID, blocked port reference(BPR)) pairs extracted from R-APS messages to make MAC address flushdecisions.

FIG. 3 depicts a simplified diagram of an ERP ring 300 with MAC addresslearning before a signal failure. Node 1 acts as the RPL Owner 310 withthe link connecting to Node 6 as the RPL 320. In FIG. 3, six MAC addressstations (i.e., A, B, C, D, E, F) are exchanging traffic with eachother. The current MAC address learning on each of these nodes is asdepicted in FIG. 3. Each node of the ERP ring 300 has two ring ports,indicated in FIG. 3 by the port numbers 1 and 2. Each ring port has anassociated label, such as the port number (e.g., 0 or 1; 1 or 2) or a“left” or “right” label, although other labels are also possible. Thelabel itself is arbitrary, but association of labels to ring ports ofERP ring nodes needs to be consistent.

In the embodiment depicted in FIG. 3, the ring ports of a node arenumbered in a counter-clockwise direction around the ERP ring 300. Thatis, traveling counter-clockwise around the ERP ring 300, port number 1of a node is reached before port number 2 of the node. In otherembodiments, ring ports are numbered in a different manner, e.g., in aclockwise direction.

Assuming the link connecting Node 3 and Node 4 experiences a signalfailure, not all the ring ports on which MAC addresses are learned needto be flushed. Only one ring port on each node would be flushed asfollows:

1. On Node 2, only the ring port on which the MAC addresses are learnedfor stations A, B, C, and D would be flushed, and the other ring portwould not be flushed. That is, port number 1 would be flushed, whileport number 2 would not be flushed. This is because the MAC addressstation F learned on port number 2 is still valid for Node 2, such thatrouting from Node 2 to station F is unaffected by the signal failurebetween Node 3 and Node 4. However, MAC address stations A, B, and Clearned on port number 1 is no longer valid for Node 2, because routingfrom Node 2 to those MAC address stations was affected by the signalfailure.

2. On Node 3 and Node 4, MAC address flush is performed on the ring portto the link that has the signal failure. That is, port number 1 of Node3 and port number 2 of Node 4 would be flushed. The other ring ports ofNode 3 and Node 4 would not be flushed.

3. On Node 5, only the ring port on which the MAC addresses are learnedfor stations C, D, E, and F would be flushed. The ring port on which theMAC address is learned for station A would not be flushed. That is, portnumber 2 would be flushed, while port number 1 would not be flushed.

4. On Node 6, only the ring port on which the MAC addresses are learnedfor stations B, C, D, E, and F would be flushed. That is, port number 2would be flushed, while port number 1 would not be flushed. There is nocurrent MAC address learning on port number 1 of Node 6, because datamessage traffic is blocked on the RPL 320 when the topology is in astable state.

Effectively, only one ring port of each node of the ERP ring 300 needsto be flushed, and the data message traffic would still be restored.There is a pattern to the ring ports which need to be flushed. The ringport of a node that needs to be flushed is the ring port that, when thetopology is in a stable state, would receive data message traffictraveling from the point of the signal failure. From the point of thesignal failure to the RPL Owner 310, there are 2 paths.

Path 1: Node 3→Node 2→Node 1 (RPL Owner 310). For all these nodes, onlyport number 1 is flushed.

Path 2: Node 4→Node 5→Node 6→Node 1 (RPL Owner 310). For Node 4, Node 5,and Node 6, only port number 2 is flushed.

MAC Address Flushing Only Once at a Node in Response to a Failure

In the example of FIG. 3, both Node 3 and Node 4 will continuegenerating R-APS(SF) PDUs as long as the signal failure between thempersists. For example, R-APS(SF) PDUs may be generated by a node everyfive seconds while a failure condition persists on a ring. Under thepresent G.8032 ERPS protocol, any node receiving a R-APS(SF) willperform a MAC address flush on both of its ring ports. This flushing ofboth ring ports instead of just the ring port affected by the failure isone inefficiency of the current G.8032 ERPS protocol. As each node inthe ERP ring 300 will receive a R-APS(SF) PDU from each of Node 3 andNode 4, each node will perform the MAC address flush twice. This doubleflushing at the node is another inefficiency of the current G.8032 ERPSprotocol.

It would be more efficient to perform MAC flush only once and only onone ring port of a node for a failure on the ring. In one embodiment, anode flushes MAC addresses only once in response to a failure on thering. This can be achieved, for example, by using the ERP node statetransition from Idle state to Protection state. When there is no failureon the ring (e.g., a signal failure), each node of the ring will be inIdle state. When there is a signal failure on the ring, each node of thering will change to Protection state upon receiving a first R-APS(SF)PDU. The first R-APS(SF) PDU will result in this node state transitionalong with the MAC address flush, and subsequent R-APS(SF) PDUs for thesame signal failure will not result in any MAC address flush. Asubsequent R-APS(SF) PDU may be received from the same node thatgenerated the first R-APS(SF) PDU or from the other node adjacent to theaffected link. For the example of FIG. 3, irrespective of whether thefirst R-APS(SF) PDU is received from Node 3 or Node 4, the MAC addressflush will happen only once when the node changes from Idle state toProtection state.

MAC Address Flushing Only Once at a Node at the Receiving Ring Port

Under the present G.8032 ERPS protocol, when a node performs MAC addressflush in response to receiving a R-APS(SF), both of the node's ringports are flushed. However, only one of the node's ring ports (i.e., theaffected ring port) needs to be flushed because MAC addresses learned onthat ring port become invalid for the node due to the failure. Incontrast, MAC addresses learned on the other ring port (i.e., theunaffected ring port) of the node are still valid following the failure.Thus, the valid MAC addresses are unnecessarily flushed, along with thenecessary flushing of the invalid MAC addresses, and the valid MACaddresses need to be relearned.

In one embodiment, a node flushes MAC addresses learned on only one ofits ring ports in response to a failure on the ring. The ring port onwhich to perform the MAC address flush needs to be determined. Asdiscussed above, MAC address flushing at a node need only occur on oneof the two ring ports, i.e., either port number 1 or port number 2 inthe example of FIG. 3. In some scenarios, the ring port on which toperform the MAC address flush should be determined as the receiving ringport, i.e., the ring port that receives the respective R-APS(SF)indicating the failure on the ring.

Referring to the example of FIG. 3, for the R-APS(SF) PDUs generated byNode 3:

-   -   On Node 2, reception at port number 1 of the R-APS(SF) generated        by Node 3 should result in MAC address flushing on port number 1        but not on port number 2. That is, the ring port of Node 2 that        is flushed is the receiving ring port, i.e., the ring port that        receives the R-APS(SF) generated by Node 3.    -   On Node 1, reception at port number 1 of the R-APS(SF),        generated by Node 3 and forwarded by Node 2, should result in        MAC address flushing on port number 1 but not on port number 2.        That is, the ring port of Node 1 (the RPL Owner 310) that is        flushed is the non-RPL ring port (i.e., the ring port that is        not facing the RPL 320), which is also the receiving ring port        here.

For R-APS(SF) PDUs generated by Node 4:

-   -   On Node 5, reception at port number 2 of the R-APS(SF) generated        by Node 4 should result in MAC address flushing on port number 2        but not on port number 1. That is, the ring port of Node 5 that        is flushed is the receiving ring port, i.e., the ring port that        receives the R-APS(SF) generated by Node 4.    -   On Node 6, reception at port number 2 of the R-APS(SF),        generated by Node 4 and forwarded by Node 5, should result in        MAC address flushing on port number 2 but not on port number 1.        That is, the ring port of Node 6 that is flushed is the        receiving ring port.

MAC Address Flushing Only Once at a Node at the Non-Receiving Ring Port

A scenario may occur where the R-APS(SF) generated by Node 3 is receivedat Node 6 before the R-APS(SF) generated by Node-4 is received at Node6. In such a case, flushing the Node 6 ring port at which the earlierR-APS(SF) is received (i.e., the receiving ring port for the earlierR-APS(SF)) would result in MAC address flush being performed on theunaffected ring port (here, port number 1). Instead, the ring port onwhich to perform the MAC address flush should be determined as thenon-receiving ring port, i.e., the ring port that does not receive theearlier R-APS(SF) indicating the failure on the ring. Using thefollowing technique results in MAC address flushing only on the affectedring port and not on the unaffected ring port. A ring port is affectedby the failure if at least one MAC address learned on it is no longervalid due to the failure. A ring port is unaffected by the failure ifall the MAC addresses learned on it are still valid following thefailure.

When the R-APS(SF) crosses the RPL Owner 310 (here, Node 1), a flagfield of the PDU header may be set (e.g., set to 1). This flag field isnot used by ERP and is ignored on reception under the current G.8032ERPS protocol. Thus, using this flag field will not haveinter-operability issues with equipment implementing the current G.8032ERPS protocol.

In the case of FIG. 3, when the R-APS(SF) from Node 3 is received at theRPL Owner 310 (Node 1), the flag is set to 1, and the R-APS(SF) with theset flag is forwarded to Node 6. The RPL Owner 310 (Node 1) performs aMAC address flush on the non-RPL ring port, which is the receiving ringport here. When the R-APS(SF), generated by Node 3 and forwarded by theRPL Owner 310 (Node 1), is received at Node 6, the flag field ischecked. Because the flag was set by the RPL Owner 310, Node 6determines that the flag is set and performs MAC address flush on portnumber 2 (i.e., the non-receiving ring port for this earlier R-APS(SF))rather than on port number 1 (i.e., the receiving ring port).

Similarly, if a R-APS(SF) from Node 4 reaches the RPL Owner 310 (Node1), the flag is set (e.g., set to 1), and the R-APS(SF) with the setflag is forwarded to Node 2. The RPL Owner 310 (Node 1) performs a MACaddress flush on the non-RPL ring port, which is the non-receiving ringport here. The RPL Owner 310 forwards the R-APS(SF) with the set flag onits non-RPL ring port to Node 2 using a multicast destination MACaddress of the R-APS(SF) PDU. When the R-APS(SF), generated by Node 4and forwarded by the RPL Owner 310 (Node 1), is received at Node 2, theflag field is checked. Because the flag was set by the RPL Owner 310,Node 2 determines that the flag is set and performs MAC address flush onport number 1 (i.e., the non-receiving ring port for this earlierR-APS(SF)) rather than on port number 2 (i.e., the receiving ring port).

The above technique utilizing the presently unused flag field of theR-APS(SF) PDU header limits MAC address flushing to only one ring port,the affected ring port, of a node, irrespective of which node of thering generated the R-APS(SF), Node 3 or Node 4 in this example. In otherembodiments, a different indicator (e.g., a different field of the PDUheader) can be used to indicate that MAC address flushing is to beperformed on the non-receiving ring port.

Combining the techniques explained above results in flushing the MACaddresses only once and only on one ring port of each node in the ring,providing a significant reduction in the time taken to restore trafficdue to the reduction in inefficient, redundant flushing when compared toflushing under the current G.8032 ERPS protocol. However, someembodiments may implement fewer than all of the above techniques, whichwould still lead to improved efficiency. For example, in one embodiment,having a node flush MAC addresses only once in response to a particularfailure on the ring (i.e., flushing upon receipt of a first, but not asubsequent, R-APS(SF) for the failure) avoids inefficient, redundantflushing, since the MAC addresses that are no longer valid due to thefailure have already been flushed upon receipt of the first R-APS(SF).In another embodiment, having a node flush MAC addresses only on theaffected ring port (i.e., flushing on the non-receiving ring port if theflag is set, otherwise on the receiving ring port) avoids inefficient,redundant flushing, since all the MAC addresses learned on theunaffected ring port are still valid following the failure.

Filtering Database (FDB) Flush on Major Ring when Sub-Ring Experiences aSignal Failure (SF)

An FDB flush consists of removing MAC addresses learned on the ringports of the protected Ethernet ring from the node's FDB. FIG. 4 depictsa simplified diagram of two ERP rings: a major ring 400 a and a sub-ring400 b. Interconnection nodes 440 (i.e., Node 3 and Node 4 in thisexample) are nodes which connect the major ring 400 a and the sub-ring400 b. In the example of FIG. 4, the interconnection nodes 440 areinterconnected by a single link with no intervening nodes. Eachinterconnection node 440 has three ring ports: two major ring ports 450a (i.e., ring ports associated with the major ring 400 a), and onesub-ring port 450 b (i.e., a ring port associated with the sub-ring 400b). Each interconnection node 440 is associated with two ERP instances:one for the major ring 400 a, and the other for the sub-ring 400 b. EachERP instance configures its own RPL and RPL Owner node, and activatesprotection switching procedures independently of each other ERPinstance. The major ring ERP instance (i.e., the ERP instance for themajor ring 400 a) flushes the major ring ports 450 a, while the sub-ringERP instance (i.e., the ERP instance for the sub-ring 400 b) flushes thesub-ring port 450 b. The ERP mechanism flushes the FDB with the goal ofre-learning the correct filtering entries when protection switching hasexecuted.

The major ring 400 a forms a complete ring, whereas the sub-ring 400 bforms a broken ring, because the link connecting the interconnectionnodes 440 is owned (e.g., controlled and protected) by the major ring400 a only, and not by the sub-ring 400 b. The major ring 400 a has anRPL Owner 410 a (here, Node 1) responsible for blocking and unblockingdata message traffic over the RPL 420 a. In some embodiments, thenon-RPL Owner node on the other end of the RPL 420 a (e.g., an RPLNeighbor—here, Node 6) also blocks and unblocks its RPL port to datamessage traffic. Similarly, the sub-ring 400 b has an RPL Owner 410 b(here, Node 7) responsible for blocking and unblocking data messagetraffic over the RPL 420 b, and can have an RPL Neighbor (here, Node 8)that also blocks and unblocks its RPL port to data message traffic.

In the example of FIG. 4, the link connecting Node 9 and Node 10experiences a signal failure 430 b. Each of Node 9 and Node 10 startstransmitting R-APS(SF) PDUs. The arrows in the counter-clockwisedirection around the sub-ring 400 b indicate transmitting and forwardingof the R-APS(SF) generated by Node 9. The arrow in the clockwisedirection of the sub-ring 400 b indicates transmitting of the R-APS(SF)generated by Node 10. In some embodiments, in the case of a sub-ringsignal failure 430 b, the R-APS(SF) terminates on the interconnectionnodes 440, here Node 3 and Node 4. That is, each interconnection node440 does not forward the R-APS(SF) for a sub-ring signal failure 430 bto any other node, including the other interconnection node 440, of themajor ring 400 a. This may occur, for example, when the sub-ring 400 bis operated without a R-APS virtual channel between the interconnectionnodes 440. In some embodiments (e.g., if so configured), eachinterconnection node 440 generates and transmits a R-APS Flush Event(R-APS(FE)) message to other nodes, including the other interconnectionnode 440, of the major ring 400 a. The R-APS(FE) can trigger FDB flushon the ring ports of the major ring 400 a nodes.

On receiving the R-APS(SF) for the sub-ring signal failure 430 b, nodesthat are part of the sub-ring 400 b perform an FDB flush on both ringports under the current G.8032 ERPS protocol. Similarly, on receivingthe R-APS(FE) for the sub-ring signal failure 430 b, non-interconnectionnodes that are part of the major ring 400 a perform an FDB flush on bothring ports under the current G.8032 ERPS protocol. When aninterconnection node 440 receives the R-APS(SF) for the sub-ring signalfailure 430 b, the sub-ring ERP instance performs an FDB flush on thesub-ring port 450 b. The sub-ring port 450 b is also the receiving ringport, because the other ring ports of the interconnection node 440(i.e., the major ring ports 450 a) would not receive a R-APS(SF) for thesub-ring signal failure 430 b. On the interconnection nodes 440, thesub-ring ERP instance also signals the major ring ERP instance toperform the FDB flush. For the current G.8032 ERPS protocol, both of themajor ring ports 450 a of each interconnection node 440 are flushed torestore the data message traffic. However, only one of the two majorring ports 450 a of each interconnection node 440 is affected by thesub-ring signal failure 430 b. The flushing of all three ring ports ofan interconnection node 440 is another inefficiency of the currentG.8032 ERPS protocol. In addition, the flushing of both ring ports ofnodes of the sub-ring 400 b and non-interconnection nodes of the majorring 400 a is also inefficient under the current G.8032 ERPS protocol.

In some embodiments, only one of the two ring ports of nodes of thesub-ring 400 b will be flushed in response to a sub-ring signal failure430 b. On receiving the R-APS(SF) for the sub-ring signal failure 430 b,non-RPL Owner nodes that are part of the sub-ring 400 b will perform anFDB flush only on the receiving ring port. The RPL Owner 410 b (here,Node 7) will perform an FDB flush only on the non-RPL ring port. Thisprovides a reduction in the time taken to restore traffic due to theavoidance of unnecessary flushing at a ring port of the sub-ring nodeswhen compared to flushing under the current G.8032 ERPS protocol, whichrequires flushing on both ring ports of the sub-ring nodes.

Filtering Database (FDB) Flush on Only One Ring Port of anInterconnection Node when Sub-Ring Experiences a Signal Failure (SF)

In some embodiments, only one of the three ring ports of aninterconnection node 440 will be flushed in response to a sub-ringsignal failure 430 b. The ring port of the interconnection node 440chosen for the flush depends on a flag field of the R-APS(SF) PDU headerand possibly depends on the label associated with the sub-ring port 450b. In still other embodiments, a different indicator (e.g., a differentfield of the PDU header) can be used to determine which ring port of theinterconnection node 440 is to be flushed.

Examples of flushing at an interconnection node 440 on a single ringport are now provided with reference to FIG. 4, which also depictsentries of the FDB at the ring ports before the sub-ring signal failure430 b occurs. In the example of FIG. 4, ten stations (i.e., A, B, C, D,E, F, G, H, I, J), such as MAC address stations, are exchanging trafficwith each other. When the sub-ring signal failure 430 b occurs betweenNode 9 and Node 10, the RPL Owner 410 b (Node 7 in FIG. 4) receives theR-APS(SF) and will perform an FDB flush on the non-RPL ring port, whichis the non-receiving ring port here. The RPL Owner 410 b also sets aflag field of the R-APS(SF) PDU header and forwards the R-APS(SF) withthe set flag, using the non-receiving ring port, to the neighbor node.

When an interconnection node 440 receives a R-APS(SF) for the sub-ringsignal failure 430 b, the sub-ring ERP instance checks the flag field.If the R-APS(SF) was not forwarded to the interconnection node 440through the RPL Owner 410 b, the flag will not be set, and the sub-ringERP instance of the interconnection node 440 performs an FDB flush onthe sub-ring port 450 b, which is also the receiving ring port. However,in this embodiment with the flag not set, the sub-ring ERP instance willnot signal the major ring ERP instance to perform an FDB flush on eitherof its two major ring ports 450 a, as there is no need to flush themajor ring ports 450 a. Thus, when the interconnection node 440 receivesthe R-APS(SF) with the flag not set, FDB flush is only performed on thesub-ring port 450 b.

An example of this process is provided for interconnection Node 4. ForNode 4, before the sub-ring signal failure 430 b occurs, the FDB atsub-ring port 450 b labeled as port number 2 has entries for stations H,I, and J, and the major ring port 450 a labeled as port number 2 hasentries for stations A, B, C, and G. When the sub-ring signal failure430 b occurs between Node 9 and Node 10, the FDB entries for stations Hand I are no longer valid at sub-ring port 450 b of Node 4. When thesub-ring ERP instance of Node 4 receives the R-APS(SF) and determinesthat the flag is not set (i.e., as the R-APS(SF) generated by Node 10 isnot forwarded through the RPL Owner 410 b to Node 4), the sub-ring ERPinstance performs an FDB flush on the sub-ring port 450 b. Because theFDB entries for stations H and I are no longer valid at sub-ring port450 b, an FDB flush is needed there. Following the sub-ring signalfailure 430 b, routing between Node 4 and stations H and I will occurthrough the major ring port 450 a labeled as port number 2. However,because the FDB entries for stations A, B, C, and G at the major ringport 450 a labeled as port number 2 are all still valid, an FDB flushdoes not need to be performed there. The FDB entries for stations A, B,C, and G will be maintained at the major ring port 450 a labeled as portnumber 2. Instead, the major ring port 450 a labeled as port number 2can add FDB entries for stations H and I for the updated routing, forexample, by broadcasting data frames through the network until thecorresponding MAC addresses are re-learned. Thus, for interconnectionNode 4, only performing an FDB flush on the sub-ring port 450 b, but noton either of the major ring ports 450 a, provides another improvement inefficiency compared to the flushing under the current G.8032 ERPSprotocol.

Returning to the sub-ring ERP instance of an interconnection node 440checking the flag field of the R-APS(SF) PDU header, if the sub-ring ERPinstance determines that the flag is set (e.g., set to 1 because theR-APS(SF) was forwarded to the interconnection node 440 through the RPLOwner 410 b), the sub-ring ERP instance does not perform an FDB flush onthe sub-ring port 450 b, which is also the receiving ring port. Underthe single ERP ring scenario described above with reference to FIG. 3, aset flag indicates that the node should perform a flush at thenon-receiving ring port. However, the interconnection node 440 does nothave a non-receiving sub-ring port. Instead, the sub-ring ERP instanceof the interconnection node 440 signals the major ring ERP instance toperform an FDB flush on only one of its two major ring ports 450 a. Thesub-ring ERP instance determines that the major ring port 450 a forperforming an FDB flush is the major ring port 450 a with an associatedlabel that is the same as the label associated with the sub-ring port450 b. Thus, when the interconnection node 440 receives the R-APS(SF)with the flag set, FDB flush is only performed on the major ring port450 a with the same associated label as that of the sub-ring port 450 b.

An example of this process is provided for interconnection Node 3. ForNode 3, before the sub-ring signal failure 430 b occurs, the FDB atsub-ring port 450 b labeled as port number 1 has a single entry forstation G, and the major ring port 450 a labeled as port number 1 hasentries for stations D, E, F, H, I, and J. When the sub-ring signalfailure 430 b occurs between Node 9 and Node 10, the FDB entries forstations H and I are no longer valid at Node 3's major ring port 450 alabeled as port number 1. When the sub-ring ERP instance of Node 3receives the R-APS(SF) and determines that the flag is set (i.e., set byRPL Owner 410 b before the R-APS(SF) is forwarded to Node 3), thesub-ring ERP instance does not perform an FDB flush on the sub-ring port450 b. Because the FDB entry for station G at the sub-ring port 450 b isstill valid following the sub-ring signal failure 430 b, an FDB flushdoes not need to be performed there. The FDB entry for station G will bemaintained at the sub-ring port 450 b. Instead, with the flag set, thesub-ring ERP instance of interconnection Node 3 signals the major ringERP instance to perform an FDB flush on the major ring port 450 a withan associated label that is the same as the label associated with thesub-ring port 450 b, here labeled as port number 1. The FDB flush at themajor ring port 450 a labeled as port number 1 removes the FDB entriesfor stations H and I, which are no longer valid. The sub-ring port 450 bof Node 3 can add FDB entries for stations H and I for the updatedrouting, for example, by broadcasting data frames through the networkuntil the corresponding MAC addresses are re-learned. Thus, forinterconnection Node 3, only performing an FDB flush on the major ringport 450 a labeled as port number 1, but not on the other major ringport 450 a or the sub-ring port 450 b, provides another improvement inefficiency compared to the flushing under the current G.8032 ERPSprotocol. The other major ring port 450 a, labeled as port number 2 forNode 3, remains unaffected by the sub-ring signal failure 430 b.

The techniques explained above results in flushing the FDB on only oneof the three ring ports (i.e., a major ring port or a sub-ring port) ofan interconnection node when a failure on the sub-ring occurs. Thisprovides a significant reduction in the time taken to restore trafficdue to the reduction in unnecessary flushing at two ring ports of aninterconnection node when compared to flushing under the current G.8032ERPS protocol, which requires flushing on all three ring ports of theinterconnection node.

FIG. 5 depicts a simplified flowchart 500 depicting clearing of addressinformation at a non-RPL Owner network device in response to a failureon the ring according to an embodiment of the present invention. FIG. 5will be described with reference to the example of FIG. 3. In theexemplary embodiment depicted in FIG. 5, the processing steps areperformed by a network device of a plurality of network devicesconfigured in a ring. The network device includes multiple portsconfigurable to receive control messages in response to a failure on thering and a memory configurable to store address information of theports. Address information of a particular port may identify a set ofone or more addresses associated with the particular port. Theprocessing depicted in FIG. 5 may be implemented in software (e.g.,code, instructions, program) executed by one or more processing units(e.g., processors, cores), hardware, or combinations thereof. In certainembodiments, the software may be stored on a non-transitorycomputer-readable storage device or medium. The particular series ofprocessing steps depicted in FIG. 5 is not intended to be limiting.

At 502, a first control message is received in response to a failure ona ring. For example, in FIG. 3, Node 2 receives a R-APS(SF) generated byNode 3. At 504, the port on which the first control message was receivedis determined. Continuing the example, port number 1 of Node 2 isdetermined as the receiving ring port for that R-APS(SF). At 506,whether a flag of the first control message is set is determined. Insome embodiments, the flag is a value in a flag field, such as the flagfield of the R-APS(SF) protocol data unit (PDU). The flag may bedetermined as not being set if the value in the flag field is set to“0,” for example. Similarly, the flag may be determined as being set ifthe value in the flag field is set to “1.”

If, at the decision of 506, the flag of the first control message isdetermined as not being set (i.e., the “No” branch), address informationof the port determined at 504 is cleared at 508. Clearing the addressinformation may include, for example, flushing MAC addresses or FDBentries associated with the particular port. Continuing the example,because the R-APS(SF) generated by Node 3 and received at Node 2 doesnot pass through the RPL Owner 310, the flag of the R-APS(SF) is notset, and the address information of port number 1 (i.e., the determinedport) of Node 2 is cleared.

If, at the decision of 506, the flag of the first control message isdetermined as being set (i.e., the “Yes” branch), address information ofa port that is not the port determined at 504 is cleared at 510. Thatis, address information is cleared at a different port of the networkdevice than the port on which it was determined that the first controlmessage was received. Using a different example from FIG. 3, for aR-APS(SF) generated by Node 4 and received at Node 2, that R-APS(SF)would pass through the RPL Owner 310, which sets the flag of theR-APS(SF) before forwarding to Node 2. The R-APS(SF) generated by Node 4would be received on port number 2 of Node 2. Thus, the flag of theR-APS(SF) is determined as being set, and the address information ofport number 1 of Node 2 (i.e., the port that is not the determinedreceiving port number 2) is cleared.

At 512, address information of another port of the network device is notcleared. For example, address information of the other port of thenetwork device may be maintained. Thus, if address information of theport determined at 504 is cleared at 508, address information of adifferent port of the network device is not cleared, but is insteadmaintained, at 512. In the first example of the R-APS(SF) from Node 3,port number 2 of Node 2 is not cleared. However, if address informationis cleared at a different port of the network device than the determinedport at 510, address information of the determined port is not cleared,but is instead maintained, at 512. Not clearing address information mayinclude, for example, not flushing MAC addresses or FDB entriesassociated with the particular port, or alternatively, maintaining MACaddresses or FDB entries associated with the particular port. In thesecond example of the R-APS(SF) from Node 4, port number 2 (i.e., thedetermined receiving port) of Node 2 is not cleared.

At 514, the first control message is forwarded using the port that isnot the determined port. The first control message may be forwarded to aneighbor network device of the plurality of network devices. A flag ofthe forwarded control message may indicate to the neighbor networkdevice which port of the neighbor network device to clear addressinformation. For example, if the flag of the first control message wasdetermined as not being set at the decision of 506, the first controlmessage with the flag not set is forwarded. Conversely, if the flag ofthe first control message was determined as being set at the decision of506, the first control message with the flag set is forwarded. In theabove examples, Node 2 forwards the R-APS(SF) from Node 3 with the flagnot set to neighbor Node 1, and forwards the R-APS(SF) from Node 4 withthe flag set to neighbor Node 3.

At 516, a second control message is received in response to the samefailure on the ring. The first control message and the second controlmessage may be received on the same port or different ports of thenetwork device. In some embodiments, the address information of the portcleared at 508 or 510 is again not cleared (i.e., the addressinformation is maintained). In some embodiments, address information ismaintained or not cleared at either of the ports of the network deviceat 518. Thus, in the above examples, address information of neither ringports of Node 2 is cleared in response to receiving a subsequentR-APS(SF) for the same ring failure, from Node 3 or Node 4.

FIG. 6 depicts a simplified flowchart 600 depicting clearing of addressinformation at an RPL Owner network device in response to a failure onthe ring according to an embodiment of the present invention. FIG. 6will be described with reference to the example of FIG. 3, where Node 1is the RPL Owner 310. In the exemplary embodiment depicted in FIG. 6,the processing steps are performed by a network device of a plurality ofnetwork devices configured in a ring. The network device includes aplurality of ports configurable to receive control messages and a memoryconfigurable to store address information of the ports. Addressinformation of a particular port may identify a set of one or moreaddresses associated with the particular port. The processing depictedin FIG. 6 may be implemented in software (e.g., code, instructions,program) executed by one or more processing units (e.g., processors,cores), hardware, or combinations thereof. In certain embodiments, thesoftware may be stored on a non-transitory computer-readable storagedevice or medium. The particular series of processing steps depicted inFIG. 6 is not intended to be limiting.

At 602, a first control message is received in response to a failure ona ring. For example, in FIG. 3, Node 1 receives a R-APS(SF) generated byNode 3. At 604, the port on which the first control message was receivedis determined. Continuing the example, port number 1 of Node 1 isdetermined as the receiving ring port for that R-APS(SF). At 606, theRPL port is unblocked to allow data message traffic using the RPL port.Thus, Node 1 unblocks port number 2 to allow data message traffic on theRPL 320.

At 608, address information of a port that is not the RPL port iscleared. That is, address information is cleared at a different port ofthe network device than the port facing the RPL 320. Referring to FIG.3, the address information of port number 1 of Node 1 (i.e., the portthat is not the RPL port number 2) is cleared.

At 610, address information of the RPL port is not cleared. Not clearingaddress information may include, for example, not flushing MAC addressesor FDB entries associated with the particular port, or alternatively,maintaining MAC addresses or FDB entries associated with the particularport. In FIG. 3, RPL port number 2 of Node 1 is not cleared.

At 612, a flag of the first control message is set. In some embodiments,the flag is a value in a flag field, such as the flag field of theR-APS(SF) protocol data unit (PDU). The flag may be set by setting thevalue in the flag field to “1,” for example. Thus, Node 1 sets the flagof the first control message.

At 614, the first control message is forwarded using the port that isnot the determined port. The first control message may be forwarded to aneighbor network device of the plurality of network devices. A flag ofthe forwarded control message may indicate to the neighbor networkdevice which port of the neighbor network device to clear addressinformation. The first control message with the flag set by the RPLOwner is forwarded. In FIG. 3, Node 1 forwards the R-APS(SF), generatedby Node 3, to neighbor Node 6 but with the flag set.

At 616, a second control message is received in response to the samefailure on the ring. The first control message and the second controlmessage may be received on the same port or different ports of thenetwork device. In some embodiments, the address information of the portcleared at 608 is not cleared again (i.e., the address information ismaintained). In some embodiments, address information is maintained ornot cleared at either of the ports of the RPL Owner at 618. Thus, inFIG. 3, address information of neither ring ports of Node 1 is clearedin response to receiving a subsequent R-APS(SF) for the same ringfailure, from Node 3 or Node 4.

FIG. 7 depicts a simplified block diagram of a network device 700 thatmay incorporate an embodiment of the present invention. Network device700 may be a router or switch that is configured to forward data such asa router or switch provided by Brocade Communications Systems, Inc. ofSan Jose, Calif.

In the embodiment depicted in FIG. 7, network device 700 comprises aplurality of ports 702 for receiving and forwarding data, includingunicast and multicast packets, and multiple cards that are configured toperform processing to facilitate forwarding of the data packets. Themultiple cards may include one or more line cards 704 and one or moremanagement cards 706. A card, sometimes also referred to as a blade ormodule, can be inserted into one of a plurality of slots on the chassisof network device 700. This modular design allows for flexibleconfigurations with different combinations of cards in the various slotsof the device according to differing network topologies and switchingrequirements. The components of network device 700 depicted in FIG. 7are meant for illustrative purposes only and are not intended to limitthe scope of the invention in any manner. Alternative embodiments mayhave more or less components than those shown in FIG. 7.

Ports 702 represent the I/O plane for network device 700. A port withinports 702 may be classified as an input port or an output port dependingupon whether network device 700 receives or transmits a data packetusing the port. A port over which a data packet is received by networkdevice 700 is referred to as an input port. A port used forcommunicating or forwarding a data packet from network device 700 isreferred to as an output port. A particular port may function both as aninput port and an output port. A port may be connected by a link orinterface to a neighboring network device or network. For example, aport may be a ring port connected by a link to a neighbor networkdevice, where the neighbor network device and the network device 700 arenodes of an ERP ring. Ports 702 may be capable of receiving and/ortransmitting different types of data traffic including multicast datatraffic at different speeds including 1 Gigabit/sec, 10 Gigabits/sec, 40Gigabits/sec, or more. In some embodiments, multiple ports of networkdevice 700 may be logically grouped into one or more trunks.

Upon receiving a data packet via an input port, network device 700 isconfigured to determine an output port for the packet for transmittingthe data packet from the network device to another neighboring networkdevice or network. Within network device 700, the packet is forwardedfrom the input port to the determined output port and transmitted fromnetwork device 700 using the output port. In one embodiment, forwardingof packets from an input port to an output port is performed by one ormore line cards 704.

Line cards 704 represent the data forwarding plane of network device700. Each line card 704 may comprise one or more packet processors 708that are programmed to perform forwarding of data packets from an inputport to an output port. A packet processor on a line card may also bereferred to as a line processor. Each packet processor 708 may haveassociated memories to facilitate the packet forwarding process. In oneembodiment, as depicted in FIG. 7, each packet processor 708 may have anassociated content addressable memory (CAM) 710 and a RAM 712 forstoring forwarding parameters (RAM 712 may accordingly also be referredto as a parameter RAM or PRAM). In one embodiment, for a packet receivedvia an input port, the packet is provided to a packet processor 708 of aline card 704 coupled to the input port. The packet processor receivingthe packet is configured to determine an output port of network device700 to which the packet is to be forwarded based upon informationextracted from the packet. The extracted information may include, forexample, the header of the received packet. In one embodiment, a packetprocessor 708 is configured to perform a lookup in its associated CAM710 using the extracted information. A matching CAM entry then providesa pointer to a location in the associated PRAM 712 that storesinformation identifying how the packet is to be forwarded within networkdevice 700. Packet processor 708 then facilitates forwarding of thepacket from the input port to the determined output port.

Since processing performed by a packet processor 708 needs to beperformed at a high packet rate in a deterministic manner, packetprocessor 708 is generally a dedicated hardware device configured toperform the processing. In one embodiment, packet processor 708 is aprogrammable logic device such as a field programmable gate array(FPGA). Packet processor 708 may also be an ASIC.

Management card 706 is configured to perform management and controlfunctions for network device 700 and thus represents the managementplane for network device 700. In one embodiment, management card 706 iscommunicatively coupled to line cards 704 and includes software andhardware for controlling various operations performed by the line cards.In one embodiment, a single management card 706 may be used for all theline cards 704 in network device 700. In alternative embodiments, morethan one management cards may be used, with each management cardcontrolling one or more line cards 704.

A management card 706 may comprise a processor 714 (also referred to asa management processor) that is configured to perform functionsperformed by management card 706 and associated memory 716. Memory 716is configured or adapted to store various programs/code/instructions 722and data constructs that are used for processing performed by processor714 of management card 706. In one embodiment, processor 714 is ageneral purpose microprocessor such as a PowerPC, Intel, AMD, or ARMmicroprocessor, operating under the control of software 722 stored inassociated memory 716.

Various embodiments described above can be realized using anycombination of dedicated components and/or programmable processorsand/or other programmable devices. The various embodiments may beimplemented only in hardware, or only in software, or using combinationsthereof. For example, the software may be in the form of instructions,programs, etc. stored in a computer-readable memory and may be executedby a processing unit, where the processing unit is a portion of aprocessor, a processor, a collection of processors, a percentage of acore of a processor, a core of a processor, a set of cores, etc. Anembodiment may be implemented by one or more virtual machines (VMs)executing on a network device. Resources allocated to the VMs can be ofvarious types such as a processing resource (e.g., processing unitsprovided by the device), a system memory resource, a non-volatile memoryresource, an input/output (I/O) resource, ports of the device, bandwidthresource, and the like. In certain embodiments, the various processingdescribed above, including the processing depicted in the flowcharts inFIG. 5 and FIG. 6 can be performed in software without needing changesto existing device hardware (e.g., router hardware), thereby increasingthe economic viability of the solution. Since certain inventiveembodiments can be implemented entirely in software, it allows for quickrollouts or turnarounds along with lesser capital investment, whichfurther increases the economic viability and attractiveness of thesolution.

The various processes described herein can be implemented on the sameprocessor or different processors in any combination, with eachprocessor having one or more cores. Accordingly, where components ormodules are described as being adapted to, configured to, orconfigurable to perform a certain operation, such configuration can beaccomplished, e.g., by designing electronic circuits to perform theoperation, by programming programmable electronic circuits (such asmicroprocessors) to perform the operation, by providing software or codeinstructions that are executable by the component or module (e.g., oneor more processors) to perform the operation, or any combinationthereof. Processes can communicate using a variety of techniquesincluding but not limited to conventional techniques for interprocesscommunication, and different pairs of processes may use differenttechniques, or the same pair of processes may use different techniquesat different times. Further, while the embodiments described above maymake reference to specific hardware and software components, thoseskilled in the art will appreciate that different combinations ofhardware and/or software components may also be used and that particularoperations described as being implemented in hardware might also beimplemented in software or vice versa.

The various embodiments are not restricted to operation within certainspecific data processing environments, but are free to operate within aplurality of data processing environments. Additionally, althoughembodiments have been described using a particular series oftransactions, this is not intended to be limiting.

Thus, although specific invention embodiments have been described, theseare not intended to be limiting. Various modifications and equivalentsare within the scope of the following claims.

What is claimed is:
 1. A network device, comprising: a first port and asecond port configured to connect the network device to a ring network,the ring network including a plurality of network devices including thenetwork device; and a memory configured to store address information foreach of the first port and the second port, wherein the addressinformation for each of the first port and the second port includes oneor more network addresses for one or more of the other network devicesin the ring network; wherein the network device is configured to:determine that a control message received at the first port indicates afailure in the ring network, the control message including a flagproviding information about a path taken by the control message in thering network, the flag indicating whether the path taken by the controlmessage includes a network device designated as a Ring Protection Link(RPL) owner of the ring network; select, based on the flag, a port fromamong the first port and the second port, wherein the first port isselected when the flag indicates that the path did not include the RPLowner of the ring network, and wherein the second port is selected whenthe flag indicates that the path included the RPL owner of the ringnetwork; clear the address information for the selected port; andforward the control message from the network device using the secondport.
 2. The network device of claim 1, wherein the network device isconfigured to select the first port upon determining that the flag has afirst value.
 3. The network device of claim 1, wherein the networkdevice is configured to select the second port upon determining that theflag has a second value.
 4. The network device of claim 1, wherein thenetwork device is further configured to: determine that a second controlmessage received at the second port indicates the failure in the ringnetwork, the second control message including a second flag providinginformation about a path taken by the second control message in the ringnetwork; and forward the second control message from the network devicethrough the first port.
 5. The network device of claim 1, wherein thenetwork device is further configured to, upon determining that thecontrol message indicates a failure in the ring network, transition froman idle state to a protection state.
 6. A network device, comprising: afirst port and a second port configured to connect the network device toa ring network, the ring network including a plurality of networkdevices including the network device, wherein the second port is blockedto data messages due to the network device being configured as a RingProtection Link (RPL) owner of the ring network; and a memory configuredto store address information for the first port, wherein the addressinformation for the first port includes one or more network addressesfor one or more other network devices in the ring network; wherein thenetwork device is configured to: determine that a control messagereceived at one of the first port or the second port indicates a failurein the ring network; clear the address information for the first port;unblock the second port independently of any subsequently receivedcontrol message indicative of the failure in the ring network; select aport from among the first port and the second port, wherein the firstport is selected when the control message was received at the secondport, and wherein the second port is selected when the control messagewas received at the first port; set a flag in the control message,wherein setting the flag indicates to another network device in the ringnetwork that a path taken by the control message in the ring networkincluded the RPL owner of the ring network; and forward the controlmessage from the network device through the selected port.
 7. Thenetwork device of claim 6, wherein the network device is configured to,upon determining that the control message was received at the firstport, select the second port.
 8. The network device of claim 7, whereinthe network device is configured set the flag to a second value.
 9. Thenetwork device of claim 6, wherein the network device is configured to,upon determining that the control message was received at the secondport, select the first port.
 10. The network device of claim 9, whereinthe network device is configured to set the flag to a first value.
 11. Acomputer-readable storage memory, storing a plurality of instructionsexecutable by one or more processors, the plurality of instructionscomprising: instructions causing at least one processor from the one ormore processors to determine that a control message received at a firstport of a network device indicates a failure in a ring network, thecontrol message including a flag providing information about a pathtaken by the control message in the ring network, wherein the networkdevice includes a second port, wherein the first port and the secondport are configured to connect the network device to the ring network,the ring network including a plurality of network devices including thenetwork device, and wherein the flag indicates whether the path taken bythe control message includes a network device designated as a RingProtection Link (RPL) owner of the ring network; instructions causing atleast one processor from the one or more processors to select, based onthe flag a port from among the first port and the second port, w-hereinthe first port is selected when the flag indicates that the path did notinclude the RPL owner of the ring network, and wherein the second portis selected when the flag indicates that the path included the RPL ownerof the ring network; instructions causing at least one processor fromthe one or more processors to clear address information stored for theselected port in a memory of the network device, the memory storingaddress information for each of the first port and the second port,wherein the address information for each of the first port and thesecond port includes one or more network addresses for one or more ofthe other network devices in the ring network; and instructions causingat least one processor from the one or more processors to forward thecontrol message from the network device through the second port.
 12. Thecomputer-readable storage memory of claim 11, wherein the instructionscausing at least one processor from the one or more processors to selectthe port from among the first and the second port includes instructionsto select the first port upon determining that the flag has a firstvalue.
 13. The computer-readable storage memory of claim 11, wherein theinstructions causing at least one processor from the one or moreprocessors to select the port from among the first and the second portincludes instructions to select the second port upon determining thatthe flag has a second value.
 14. The computer-readable storage memory ofclaim 11, wherein the plurality of instructions further comprise:instructions causing at least one processor from the one or moreprocessors to determine that a second control message received at thesecond port indicates the failure on the ring network, the secondcontrol message including a second flag providing information about apath taken by the second control message in the ring network; andinstructions causing at least one processor from the one or moreprocessors to forward the second control message from the network devicethrough the first port.
 15. The computer-readable storage memory ofclaim 11, wherein the plurality of instructions further comprise:instructions causing at least one processor from the one or moreprocessors to, upon determining that the control message indicates thefailure in the ring network, transitioning the network device from anidle state to a protection state.
 16. A computer-readable storagememory, storing a plurality of instructions executable by one or moreprocessors, the instructions comprising: instructions causing at leastone processor from the one or more processors to determine that acontrol message received at one of a first port of a network device or asecond port of the network device indicates a failure in a ring network,wherein the first port and the second port are configured to connect thenetwork device to the ring network, the ring network including aplurality of network devices including the network device, wherein thesecond port is blocked to data messages due to the network device beingconfigured as Ring Protection Link (RPL) owner of the ring network;instructions causing at least one processor from the one or moreprocessors to clear address information stored for the first port in amemory of the network device, wherein the address information for thefirst port includes one or more network addresses for one or more of theother network devices in the ring network; instructions causing at leastone processor from the one or more processors to unblock the second portindependently of any subsequently received control message indicative ofthe failure in the ring network; instructions causing at least oneprocessor from the one or more processors to select a port from amongthe first port and the second port, wherein the first port is selectedwhen the control message was received at the second port, and whereinthe second port is selected when the control message was received at thefirst port; instructions causing at least one processor from the one ormore processors to set a flag in the control message, wherein settingthe flag indicates to another network device in the ring network that apath taken by the control message in the ring network includes the RPLowner of the ring network; and instructions causing at least oneprocessor from the one or more processors to forward the control messagefrom the network device through the selected port.
 17. Thecomputer-readable storage memory of claim 16, wherein the plurality ofinstructions further comprise: instructions causing at least oneprocessor from the one or more processors to, upon determining that thecontrol message was received at the first port, select the second port.18. The computer-readable storage memory of claim 17, wherein theplurality of instructions further comprise: instructions causing atleast one processor from the one or more processors to set the flag to asecond value.
 19. The computer-readable storage memory of claim 16,wherein the plurality of instructions further comprise: instructionscausing at least one processor from the one or more processors to, upondetermining that the control message was received at the second port,select the first port.
 20. The computer-readable storage memory of claim19, wherein the plurality of instructions further comprise: instructionscausing at least one processor from the one or more processors to setthe flag to a first value.
 21. A method, comprising: determining that acontrol message received at a first port of a network device indicates afailure in a ring network, the control message including a flagproviding information about a path taken by the control message in thering network, wherein the network device includes a second port, whereinthe first port and the second port are configured to connect the networkdevice to the ring network, the ring network including a plurality ofnetwork devices including the network device, and wherein the flagindicates whether the path taken by the control message included anetwork device designated as a Ring Protection Link (RPL) owner of thering network; selecting, based on the flag, a port from among the firstport and the second port, wherein the first port is selected when theflag indicates that the path did not include the RPL owner of the ringnetwork, and wherein the second port is selected when the flag indicatesthat the path included the RPL owner of the ring network; clearingaddress information stored for the selected port in a memory of thenetwork device, the memory storing address information for each of thefirst port and the second port, wherein the address information for eachof the first port and the second port includes one or more networkaddresses for one or more of the other network devices in the ringnetwork; and forwarding the control message from the network devicethrough the second port.
 22. The method of claim 21, wherein selectingthe port from among the first port and the second port comprisesselecting the first port upon determining that the flag has a firstvalue.
 23. The method of claim 21, wherein selecting the port from amongthe first port and the second port comprises selecting the second portupon determining that the flag has a second value.
 24. The method ofclaim 21, further comprising: determining that a second control messagereceived at the second port indicates the failure on the ring network,the second control message including a second flag providing informationabout a path taken by the second control message in the ring network;and forwarding the second control message from the network devicethrough the first port.
 25. The method of claim 21, further comprising,upon determining that the control message indicates the failure in thering network, transitioning the network device from an idle state to aprotection state.